package org.dev.app.controller;

import org.dev.app.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * @author wangzhuangzhuang
 * @Description:
 * @date 2022-05-25 18:55
 */
@RestController
public class DeptController_Consumer {
	//private static final String REST_URL_PROVIDER_PREFIX = "http://localhost:8001/"; 这种方式是直调用服务方的方法，根本没有用到 Spring Cloud

	//面向微服务编程，即通过微服务的名称来获取调用地址
	// 使用注册到 Spring Cloud Eureka 服务注册中心中的服务，即 application.name
	private static final String REST_URL_PROVIDER_PREFIX = "http://MICROSERVICECLOUDPROVIDERDEPT";

	// RestTemplate是一种简单访问Restful服务模板类，是Spring提供的用于访问Rest服务的客户端模板工具集，提供多种
	// 便捷访问远程HTTP服务的方法
	@Autowired
	private RestTemplate restTemplate;

	// 获取指定部门信息
	@RequestMapping(value = "/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Integer id) {
		return restTemplate.getForObject(REST_URL_PROVIDER_PREFIX + "/dept/get/" + id, Dept.class);
	}

	// 获取部门列表
	@RequestMapping(value = "/consumer/dept/list")
	public List<Dept> list() {
		return restTemplate.getForObject(REST_URL_PROVIDER_PREFIX + "/dept/list/", List.class);
	}
}